2system("pause");到底怎么用?

来源:百度知道 编辑:UC知道 时间:2024/06/11 01:03:33
先看如下代码
#include <iostream.h>
#include <stdlib.h>
main()
{
int a,i;
float c,b,aver;
c=0;
cout<<"要计算( )个数?"<<"\b\b\b\b\b\b\b\b\b\b";
cin>>a;
for(i=1;i<=a;i++) //A是用户输入的数
{
cout<<"输入第"<<i<<"个数:";
cin>>b;
c+=b;
}
aver=c/a;
cout<<aver;
system("pause");为什么不是先执行cout<<aver;?,而先执行system("pause");
}

你把cout<<aver;改成cout<<aver<<endl;
就知道为什么了
因为要打印的东西在缓存里,你不输入换行有时候是出不来的

这是缓冲区的问题,你可以去搜索一下,解释这方面问题的内容有不少。

简要说一下,输入/输出缓冲区,是为了减少程序访问I/O带来中断而设的一段空间。当程序满足某个刷新条件时,那就将清理缓冲区。这里只说一下输出缓冲区。

(1)输出缓冲区溢出
(2)遇到下一条输入语句
(3)使用刷新缓冲区迫使清除
(4)程序结束。

结合你的程序说,语句
cout<<aver;
的后面没有任何一种输出缓冲区内容的操作,因此缓冲区的内容不会输出到cout的标准输出设备(也就是屏幕)上。所以先执行了system("pause"),直到程序结束之后才输出了aver